// pages/assetFix/assetFix.js
import {getFixDept,getLocationTree,repairAsset} from "@/api/assetsFix.js"
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 报修人
    username: "",
    repairApply: wx.getStorageSync('id'),
    // 部门
    deptName: "",
    deptId:"",
    // 送修位置
    fixLocation: "",
    faultDesc: "",
    startTime: new Date().toISOString().split('T')[0],
    show: false,
    deptActions: [],
    // 位置
    showLocationPicker: false,
    locationId: '',
    locationOptions: [], // 级联选项数据
    showAssetPopup: false,
    assets:[], // 选择的资产
    assetsIds:[], // 选择的资产id
  },
  //  用户id获取部门名称
  getDeptName(repairApply) {
    getFixDept(repairApply).then(res => {
      console.log(res.data.departments,"部门");
      // 重新组合数据结构
      const deptActions = res.data.departments.map(dept => ({
        name: dept.deptName,
        id: dept.id
      }));
      this.setData({
        deptActions: deptActions
      });

    });
  },
  //转换树形结构数据
  transformToCascaderFormat(data) {
    // 校验数据结构并打印日志
    return data.map(item => {
      const transformedItem = {
        value: item.id,
        text: item.locationName
      };
      if (item.children && Array.isArray(item.children) && item.children.length > 0) {
        transformedItem.children = this.transformToCascaderFormat(item.children); // 仅在有子节点时递归处理
      }
      return transformedItem;
    });
  },
  // 获取位置树形数据
  getLocationName() {
    getLocationTree().then(res => {
      const options = this.transformToCascaderFormat(res.data);
      if (Array.isArray(options) && options.length > 0) {
        this.setData({
          locationOptions: options
        });
      } else {
        console.error("获取的位置数据为空或格式不正确");
      }
    }).catch(err => {
      console.error("获取位置数据失败:", err);
    });
  },
  // 点击申请人
  applyTap(){
    wx.showToast({
      icon: "none",
      title: '此字段不可修改，您无需填写',
    })
  },
  // 显示部门选择器
  showDeptPicker() {
    this.setData({
      show: true
    });
  },
  // 关闭部门选择器
  onClose() {
    this.setData({ show: false });
  },
  onSelect(event) {
    console.log(event.detail);
    let {name,id} = event.detail;
    this.setData({
      deptName: name,
      deptId: id,
      show: false
    });
  },
  // 显示级联选择器
  showLocationCascader() {
    this.setData({ showLocationPicker: true });
  },
    // 点击某个选项时触发
    onLocationChange(event) {
      const options = event.detail.selectedOptions;
      const lastLocation = options[options.length - 1]; // 获取数组最后一项
      
      console.log('选中项:', lastLocation);
  
      this.setData({
        fixLocation: lastLocation.text,
        locationId: Number(lastLocation.value)
      });
  },
  // 自定义确认按钮点击事件
  onCustomConfirm() {
    this.setData({ showLocationPicker: false }); 
    // 关闭弹框
    // console.log('用户确认了选中的位置:', this.data.borrowLocation);
  },
  // 点击选择资产
  showAssetPopupList(){
    this.setData({ 
      showAssetPopup: true
    });
  },
  // 当资产选择改变时
  getCheckAsset(event){
    console.log('资产选择改变:', event);
    const assetsIds = event.detail.map(item => item.id);
    this.setData({
      assets:event.detail,
      assetsIds
    })
    console.log(this.data.assetsIds,777)
  },
    // 点击提交按钮
    submintBorrow(){
      console.log(this.data)
      let {deptId,locationId,pic,faultDesc,assets,startTime,repairApply} = this.data;
      if(!deptId){
        wx.showToast({
          title: '请选择部门',
          icon: 'error'
        });
        return;
      }
      if(!locationId){
        wx.showToast({
          title: '请选择位置',
          icon: 'error'
        });
        return;
      }
      if(!faultDesc){
        wx.showToast({
          title: '请输入报修描述',
          icon: 'error'
        });
        return;
      }
      // if(!pic){
      //   wx.showToast({
      //     title: '请上传报修图片',
      //     icon: 'error'
      //   });
      //   return;
      // }
      if(!assets.length){
        wx.showToast({
          title: '请选择资产',
          icon: 'error'
        });
      }
  
      console.log('提交信息:', this.data)
      wx.showLoading({
        title: '提交中...',
      });
      repairAsset({
        repairApply,
        deptId,
        pic,
        locationId,
        faultDesc,
        startTime,
        assets
      }).then(res=>{
        console.log(res);
        wx.hideLoading();
        this.clearForm()
        //获取chooseAsset组件实例
        const chooseAsset = this.selectComponent('#chooseAsset');
        //调用组件的getAssetList方法
        chooseAsset.getAssetList();
        setTimeout(()=>{
          wx.switchTab({
            url: '/pages/index/index',
          })
        }, 500)
        wx.showToast({
          title: '提交成功',
          icon: 'success'
        })
      })
      
    },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.setData({
      repairApply: wx.getStorageSync('id'),
      username: wx.getStorageSync('username'),
    });
    this.getDeptName(this.data.repairApply)
    this.getLocationName()
  },
  // 清空表单
  clearForm() {
    this.setData({
      deptId: '',
      pic: '',
      locationId: '',
      faultDesc: '',
      startTime: '',
      assets: [],
      assetsIds:[]
    })
  },
  // 移除已选资产
  removeAsset(event){
    console.log('移除资产:', event);
    const { removeId } = event.currentTarget.dataset;
    const {assets, assetsIds} = this.data;
    const newAssets = assets.filter(item => item.id !== removeId);
    const newAssetsIds = assetsIds.filter(item => item !== removeId);
    this.setData({
      assets: newAssets,
      assetsIds: newAssetsIds
    })

    console.log(this.data.assetsIds)

  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})